package com.itheima.day14.atom.AtomicInteger.test1;

import java.util.concurrent.atomic.AtomicInteger;
//          public AtomicInteger()：	   			   初始化一个默认值为0的原子型Integer
//          public AtomicInteger(int initialValue)：   初始化一个指定值的原子型Integer
//
//          int get():   			 				 获取值
//          int getAndIncrement():      			 以原子方式将当前值加1，注意，这里返回的是自增前的值。
//          int incrementAndGet():     				 以原子方式将当前值加1，注意，这里返回的是自增后的值。
//          int addAndGet(int data):				 以原子方式将输入的数值与实例中的值（AtomicInteger里的value）相加，并返回结果。
//          int getAndSet(int value):   			 以原子方式设置为newValue的值，并返回旧值。
public class Test {
    public static void main(String[] args) {
        // 构造方法
        // method1();

        // int getAndIncrement():      			以原子方式将当前值加1，注意，这里返回的是自增前的值。
        // int incrementAndGet():     			以原子方式将当前值加1，注意，这里返回的是自增后的值。
        // method2();

        // int addAndGet(int data):				以原子方式将输入的数值与实例中的值（AtomicInteger里的value）相加，并返回结果。
        // method3();

        // int getAndSet(int value):   			以原子方式设置为newValue的值，并返回旧值。
        // method4();

    }

    // int getAndSet(int value):   			以原子方式设置为newValue的值，并返回旧值。
    private static void method4() {
        AtomicInteger ai = new AtomicInteger(10);
        int andSet = ai.getAndSet(5);
        System.out.println(andSet);
        System.out.println(ai.get());
    }

    // int addAndGet(int data):				以原子方式将输入的数值与实例中的值（AtomicInteger里的value）相加，并返回结果。
    private static void method3() {
        AtomicInteger ai = new AtomicInteger(10);
        int i = ai.addAndGet(-50);
        System.out.println(i);
        System.out.println(ai.get());
    }

    // int getAndIncrement():      			以原子方式将当前值加1，注意，这里返回的是自增前的值。
    // int incrementAndGet():     			以原子方式将当前值加1，注意，这里返回的是自增后的值。
    private static void method2() {
        AtomicInteger ai1 = new AtomicInteger();
        int andIncrement1 = ai1.getAndIncrement();
        System.out.println(andIncrement1);
        System.out.println(ai1.get());

        AtomicInteger ai2 = new AtomicInteger();
        int i = ai2.incrementAndGet();
        System.out.println(i);
        System.out.println(ai2.get());
    }

    // public AtomicInteger()：	   			    初始化一个默认值为0的原子型Integer
    // public AtomicInteger(int initialValue)： 初始化一个指定值的原子型Integer
    // int get(): 获取值
    private static void method1() {
        AtomicInteger ai1 = new AtomicInteger();
        System.out.println(ai1);
        System.out.println(ai1.get());

        AtomicInteger ai2 = new AtomicInteger(10);
        System.out.println(ai2);
        System.out.println(ai2.get());
    }
}
